<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="author" content="wangbo">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 全局对象是最顶层的对象，在浏览器环境指的是 window 对象，在Node.js指的是 global 对象。ES5之中，全局对象的属性与
    // 全局变量是等价的
    window.a = 1;
    a // 1
    a = 2;
    window.a // 2




    // ES6为了改变这一点，一方面规定，为了保持兼容性， var 命令和 function 命令声明的全局变量，依旧是全局对象的属
    // 性；另一方面规定， let 命令、 const 命令、 class 命令声明的全局变量，不属于全局对象的属性。

    // 未声明的全局变量，自动成为全局对象 window 的属性
    var a = 1;
    // 如果在Node的REPL环境，可以写成global.a
    // 或者采用通用方法，写成this.a
    window.a // 1
    let b = 1;
    window.b // undefined
  </script>
</body>

</html>